/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package BD;

import Clases.Licencia;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import javax.swing.JOptionPane;
import java.sql.ResultSet;

/**
 *
 * @author Ramiro
 */
public class ABM_Licencia {
        
        public static void obtenerLicencias(Licencia[] licenciasValidadas, Integer documentoTitular){
        Connection miConexion=Conector.GetConnection();
        String sql;
        ResultSet rs_licencia;
        
        //Capturamos los datos del titular
        
        try{
                int i=0; //Contador para recorrer array de licencias.
                    
                sql="SELECT idLicencia, idTitular, tipo, fechaEmision, fechaCaducidad, activa FROM licencia WHERE activa=1 AND idTitular="+documentoTitular.toString();
                PreparedStatement estatuto_licencia=miConexion.prepareStatement(sql);

                rs_licencia=estatuto_licencia.executeQuery();
                    
                while(rs_licencia.next() && i<6){
                    licenciasValidadas[i].setTipoLicencia(rs_licencia.getString("tipo"));
                    licenciasValidadas[i].setFechaEmision(rs_licencia.getDate("fechaEmision"));
                    licenciasValidadas[i].setFechaCaducidad(rs_licencia.getDate("fechaCaducidad"));
                    i++;
                }
                    
                estatuto_licencia.close();
        }
        catch (SQLException e) {
            System.out.println(e.getMessage());
            JOptionPane.showMessageDialog(null, "Excepción al consultar la base de datos.");
        }
    }
    
    public static void crear_licencia(Licencia licencia){
            
        Connection miConexion=Conector.GetConnection();
        String sql;
        
        //Obtenemos los campos de la licencia ingresada para volcar a la BD
        
        String IDTitularAsociado=Integer.toString(licencia.getIDTitularAsociado()); //Convertimos a string para almacenar en la BD.
        String TipoLicencia=licencia.getTipoLicencia();
        java.util.Date FechaEmision=licencia.getFechaEmision();
        java.util.Date FechaCaducidad=licencia.getFechaCaducidad();
        Integer activa=1;
        
        java.sql.Date sqlFechaEmision=new java.sql.Date(FechaEmision.getTime());
        java.sql.Date sqlFechaCaducidad=new java.sql.Date(FechaCaducidad.getTime());
        
        try {
            sql="INSERT INTO licencia (idTitular, tipo, fechaEmision, fechaCaducidad, activa) VALUES (?, ?, ?, ?, ?)";
                PreparedStatement estatuto=miConexion.prepareStatement(sql);
           
            estatuto.setString(1, IDTitularAsociado);
            estatuto.setString(2, TipoLicencia);
            estatuto.setDate(3,  sqlFechaEmision);
            estatuto.setDate(4, sqlFechaCaducidad);
            estatuto.setInt(5, activa);
            
            estatuto.executeUpdate();
            JOptionPane.showMessageDialog(null, "Licencia " + TipoLicencia + " para el titular " + IDTitularAsociado + " emitida exitosamente.", "Información", JOptionPane.INFORMATION_MESSAGE);
            estatuto.close();
            
            if(TipoLicencia.equals("C") || TipoLicencia.equals("D") || TipoLicencia.equals("E")){
                ABM_Titular.marcarComoConductorProfesional(licencia.getIDTitularAsociado());
            }
            
            ABM_Titular.marcarComoConductor(licencia.getIDTitularAsociado());
            
        }
            catch (SQLException e) {
                System.out.println(e.getMessage());
                JOptionPane.showMessageDialog(null, "No pudo emitirse la licencia "+ TipoLicencia + "para el titular " + IDTitularAsociado + ".");
            }
        }
    
        

    
    public void modificar_licencia(Licencia licencia, String tipoModificado){
        
        Connection miConexion=Conector.GetConnection();
        String sql;
        
        //Obtenemos los campos de la licencia ingresada para volcar a la BD
        
        Integer IDTitularAsociado=licencia.getIDTitularAsociado(); //Convertimos a string para almacenar en la BD.
        String TipoLicencia=licencia.getTipoLicencia();
        Date FechaEmision=licencia.getFechaEmision();
        Date FechaCaducidad=licencia.getFechaCaducidad();
            
            if(TipoLicencia.equals(tipoModificado)){
            
                try {
                    sql="UPDATE licencia fechaEmision=?, fechaCaducidad=?" + "WHERE idTitular=? AND tipo=? AND fechaCaducidad < GETDATE()";
                    PreparedStatement estatuto=miConexion.prepareStatement(sql);

                    estatuto.setDate(1, (java.sql.Date) FechaEmision);
                    estatuto.setDate(2, (java.sql.Date) FechaCaducidad);

                    estatuto.setInt(3, IDTitularAsociado);
                    estatuto.setString(4, tipoModificado);

                    estatuto.executeUpdate();
                    JOptionPane.showMessageDialog(null, "Licencia " + TipoLicencia + "para el titular " + IDTitularAsociado + " emitida exitosamente.", "Información", JOptionPane.INFORMATION_MESSAGE);
                    estatuto.close();
                }
                catch (SQLException e) {
                    System.out.println(e.getMessage());
                    JOptionPane.showMessageDialog(null, "No pudo modificarse la licencia "+ TipoLicencia + "para el titular " + IDTitularAsociado + ".");
                }
            }
        }
    
    public void dar_de_baja_licencia(Licencia licencia){
        //TODO
    }
}


